High speed data transfer for a peripheral controller

ABSTRACT

A microprogrammable controller is provided which has the capability of transmitting and receiving data simultaneously. This effectively doubles the transmission rate as compared with alternating receiving and transmitting operations. Special features are incorporated in a microprogrammable controller, having arithmetic and logical data processing capability, in order to support these functions. Furthermore, the transfer functions can be combined with a read/write memory function.

United States Patent Calle et al.

1451 June 26, 1973 [54] HIGH SPEED DATA TRANSFER FOR A 3,673,576 6/1972 Donaldson .1 340/1725 PERIPHERAL CONTROLLER 3.573.741] 4/1971 Gavril IMO/172.5 3,559,184 l/l97l Rawlings et a] 1 1 1 1. 340117215 [75] Inventors: Jaime Calle. Glen le; Ri har 3,541.513 11/1970 Paterson 340 1725 Thomas Flynn; Marion Gene Porter, both of Phoenix, of All! Primary Examiner-Paul J. Henon l73| Assignce: Honeywell Information Systems lnc., Edward Nusbaum wahham, Mass A1mrne v Dudley T. Ready. Edward W. Hughes c1z1i1 [22] Filed: May 15, 1972 [57] ABSTRACT PP 260,336 A microprogrammable controller is provided which has the capability of transmitting and receiving data simul- 152 u.s. c1. 340/1725 This effeciively dmlbles "ansmissim [51 1 [at CL I I I h I I G06 3/00 rate as compared with alternating receiving and trans- [58] Field of Search 340/1725 "fitting special features a microprogrammable controller, having arithmetic 56] Reierences Cited and logical data processing capability, in order to support these functions. Furthermore, the transfer func- UNITED STATES PATENTS tions can be combined with a read/write memory func- 3,597,743 8/197] Murphy et al. 340/1725 on. 3,573,740 4/1971 Berger et ai 340M725 3,643,223 2/1972 Ruth et al. 340M725 6 Claims, 11 Drawing Figures READ/WRITE R/W MEMORY MEMORY INTERFACE J 1 1" l 1 CONTROL I commor STORE f g STORE ADDRESS INTERFACE ll] i F g r r 8 8 7a. STORE OUTPUT 1 1 J, L REG 2 oscooen 8 2 1. 1 .1 11 1 PROCESSING 3 NETWORK 1 .111, SLOW-DATA-BUS-ihl ADAPTOR WTERRUPT f rmznmcr MECHANISM 11 l l i com/101 1 1' u ADAPTOR 77" iiI/IPtli HA1 1:1 VH1! 11 1 LUNI R()l1l ll Ammo/v l r l sump/1mm '1' 11/ Wu #1 P u-1 f ADAPTOR PERIPHERAL 2 DEVICE :1 a 1 1 111m ADAPTOR CENTRAL PnocEssoR CENTRAL f unocesson PAIENIEUJIIIIZB I973 D T BUS- OUT SHEEI 1 f 7 READ/WRITE R/w MEMORY MEMORY INTERFACE i I60 CONTROL CONTROL STORE E STORE ADDRESS INTERFACE J D m l A I- 3 7O. sTORE OUTPUT FL REG 2 DECODER m /00 E f PROCESSING NETWORK sLOw-DATA-Bus-IN ADAPTOR INTERRuPT INTERFACE MECHANIsNI CONTROLLER ADAPTOR //5 Q PERIPHERAL DEVICE #I l CONTROLLER ADAPTOR I PERIPHERAL Q7 DEVICE #2 LINK ADAPTOR 1 PERIPHERAL f DEVICE #3 I401 LINK ADAPTOR A CENTRAL I PROCEssOR f CENTRAL f PROCEssOR PATENIEDJUNZS new 3. 742.457

sums or 7 Nw rH 53 23 man man km Nkm ms:

mChE

Q ou

HIGH SPEED DATA TRANSFER FOR A PERIPHERAL CONTROLLER FIELD OF THE INVENTION This invention relates to microprogrammable peripheral controllers for use in digital computer subsystems.

BACKGROUND OF THE INVENTION The data transfer rates at which high performance peripheral devices such as disk and tape units can operate can be as high as several hundred thousand bytes per second or higher. When such data transfers pass through a microprogrammable peripheral controller, minimizing the microprogram routine overhead for controlling the data transfer is essential in order to avoid data losses. A data transfer involves the transfer of data into one controller I/O port, out another I/O port, and the performance of the controller functions. It is accordingly a primary object of the invention to minimize the overhead for peripheral data transfers.

SUMMARY OF THE INVENTION A microprogrammable controller is provided which normally has two l/O link adaptor ports assigned to communication with a central processor and has two controller adaptor ports assigned to communicate with peripheral devices. A control register is set to associate a link adaptor port with each controller adaptor port. Furthermore, an adaptor number register, settable in response to adaptor port interrupt signals, determines the adaptor port number to be serviced. Also provided is logic responsive to the state of the controller register, the adaptor number register and an adaptor interface service microinstruction such that one adaptor port is selected to receive data and a second adaptor port is selected to transmit data during the execution of a single microinstruction. In addition, these transfer functions may be combined with read/write operations with main memory.

BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a block diagram of a representative peripheral subsystem incorporating a peripheral controller in accordance with the present invention.

FIG. 2 is a block diagram showing the peripheral controller in greater detail.

FIGS. 3a, 3b, 4a, and 4b are logic diagrams illustrating the interrupt mechanism of the controller processor.

FIG. 5 shows the formats of the microinstructions essential to the interrupt functions.

FIG. 6 is a timing diagram illustrating the control signals for the controller.

FIG. 7 is a logic diagram for adaptor port selection.

FIG. 8 is a diagram of the device adaptor port interface.

FIG. 9 shows the formats for memory cycle and device adaptor port service microinstructions.

DESCRIPTION OF THE PREFERRED EMBODIMENT OF THE INVENTION FIG. I is a block diagram of a representative peripheral subsystem in which a set of peripheral devices I15, I25 and 126 are connected to a pair of central processor ports I35 and 145. The connections are through a microprogrammablc controller which includes a processing network I00, for performing logical, arithmetic and data transfer operations. a control store 50 con taining sets of microinstructions, providing programs for data transfers and peripheral device control; a con trol store output register (ROR) and decoder 70, which receive microinstructions; and a common adaptor interface 80. Controller adaptors I10 and I20 are provided to interconnect the common adaptor interface and the peripheral devices 115, I25 and 126. Similarly. link adaptors 130 and 140 interconnect the common adaptor interface and the central processor ports I35 and 145. The controller further includes a control storc address interface 60, which includes a control store ad dress register (ROSAR), and is connected to the data bus-out from the processing network I00. In addition, a read/write memory 10 is generally necessary for efficient controller operation. This memory is serviced by the read/write memory interface 20, which is also con nected to the processing network data-bus-out. Prefer ably, control store 50 has a writable portion of at least 5 l2 microinstructions, which is also served by the memory interface 20. An interrupt mechanism is responsive to signals from the adaptors, under the control of the data-bus-out signals. The operand inputs for the processing network I00 are provided by the slow and fast-data-bus-in from the adaptor interface 80 and the read/write memory 10.

The FIG. 1 peripheral subsystem is representative in that various combinations of controller adaptors and link adaptors are possible, even a stand-alone configuration with one or more controller adaptors may be useful. However, the most common configuration would be a single link adaptor and a single controller adaptor for a set of disk units or a set of tape units. Dual channel operation is enabled by a second link adaptor.

The primary data paths for the microprogrammable controller portion of FIG. I are shown in greater detail in FIG. 2. In order to minimize costs, it is preferable to use standard logic modules. Unless otherwise indicated, the registers are implemented with J-K flip-flops and the switches are I of it select switches, where n E 2, 4 or 8, according to the number of switch inputs. In FIG. 2, a pair of redundant arithmetic/logic units 88 and 89 enable either error detection by comparator 97 for functions of a pair of byte operands or as a transfer path for a word transfer operation. The operands are selected by GP and OP switches 103 and 104. H and H switches 10] and I03 are interposed between the OP switches and the arithmetic/logic units in order to insure proper inputs to the adder/logic units when the outputs are stored in one of the operand registers, or AB accumulator 105. In addition to the adder/logic functions, shifts left or right by one bit are performed by S and S switches 92 and 93. The R,, and R, result switches 94 and 95 provide inputs to the branch test register 106, the register bank assembly Ill and the AB accumulator. The R and R switches select the adder/logic output or the S switches or one of the data busses, fast-data-bus-in, FDBI, or slow-data-busin, SDBI, thereby producing a function network output DERS,, D and D switches I07 and 108 selectively connect the AB accumulator or the register bank assembly to the data-bus-out, DBO. A function test generator 91 generates four indicator bits, such as carry and zero, which are selectively applied to either, the upper or lower half of indicator register 99 through switch 98.

In FIG. 2. the data-bus-out (DBO) is made available to the controller adaptor module 110, the controller number register 121, the timer 122 and the control register 123. All of these elements, except module 110, are connected to the sIow-databus (SDBI) through B and B switches 124 and 125, and are thereby made available to the FIG. 2 processor portion.

FIG. 2 also shows the primary data paths for the microinstruction processing. Address adders 132 and 133 either increment the current microinstruction address by two for the control store 50 or change the address in accordance with certain branch microinstructions. The resulting address or another address is selected by A and A, switches 134 and 135 and applied to control store 50 and the control store address register 136. Pairs of microinstructions are transferred to the R and R0, control store output registers 144 and 145 through R0 and R0 switches 142 and 143. Alterna tively, the R0,, switch transfers the microinstruction from the R0 register to the R0,, register. The RO register can also selectively receive the output of the function network output DERS, through the R0 switch. Instructions, other than branch instructions, are decoded by the I general purpose decoder 146 and branch instructions are decoded by the B branch decoder 147. These decoders are responsive to the contents of the RO and RO registers, respectively. The controller registers AUXAR 128, INTAR 129 and ROSAR 136, together with the inputs from the controller adaptor module and the read/write memory data are made available to the processing structure over the fast-data-bus-in (FDBI) through CA and CA, switches 138 and 139.

The AI adaptor port interface for the controller adaptor 110 is comprised of common sets of lines for datain, data-out, address/control, status and miscellaneous control. In addition to these lines, the AI includes for each adaptor, lines for an interrupt, adaptor selection, event notification, and a raw clock. Both the data-in and data-out line sets are l6 bits wide, primarily to support two byte wide data transfer so as to enable doubling the data transfer rate over a single byte transmission rate. The address/control lines direct a command to the adaptor in order to change the condition of the adaptor or to define the nature of a concurrent data transfer. The status lines convey information on the condition of the adaptor to the processing unit. The miscellaneous control lines perform functions such as data strobe, response-in (RPI) and initialize. These connections, not including parity are listed as follows:

DAI Connections No. of Lines To/From Adaptor data-out l6 to data-in In from address/control it to status 4 from raw clock I to run clock deliner I to interrupt I per adaptor from event notification l per adaptor from select l per adaptor to response in (RPI) l per adaptor from initialize I per adaptor to control reset I per adaptor to operational out I per adaptor to LA selected I per adaptor (ports 0-] to operational in I per adaptor from LA definer I per adaptor (ports 0-l) to execution clock I per adaptor to high level int, in

progress I per adaptor (ports 0-l to interrupt definer l per adaptor from The set of working registers, AB accumulator I05, register bank assembly 111, branch test register 106, indicator registers 98, AUXAR 128,1NTAR 129, and the adaptor number register 121 are duplicated. FIG. 4b shows an example of the duplication and how the current working register is selected. For further details of the construction of the processor, not pertinent to the present invention, reference is made to the copending application, Microprogrammable Peripheral Controller", Ser. No. 240,064, filed by the undersigned Mar. 31, 1972.

Three types of microinstructions are provided for interrupt mechanism services, all of which have 0001 in the four most significant bits, indicating that a word transfer operation is specified, and have the format shown in FIG. 5. The types of operations are specified by the last four bits which are as follows:

1101: change interrupt mechanism conditions (CIM) l I I0: store interrupt mechanism register (SIM) I I I I: load interrupt mechanism register (LIM) These operations types are decoded by the general instruction decoder 146 of FIG. 2. The register or control flip-flop affected is specified by bits 4-7. For example, the adaptor control register 123 and the adaptor number register 121 are respectively represented by 0001 and 0010 for both the SIM and LIM types of microinstructions. Also, 01 I l specifies the DUAL flip-flop for the CIM type of microinstruction. Bits 4-7 are decoded by the binary to one of ten converter 245 in FIG. 3b. Bit 11 specifies a set or reset function for the CIM type of microinstruction.

FIGS. 30, 3b, 4a and 4!) show the basic logic for implementing the desired essential interrupt functions. In FIG. 3a, gates 201-217 establish the priority of inter rupt requests from adaptor ports 0-3 which have re spective interrupt request signals I on the adaptor interface, AI. These gates generate four priority signals R the respective outputs of gates 206, 207, 216 and 217, which at most have one of these signals at a logical zero level, indicating a port interrupt request to be serviced. For i6 signals from the control store output register 144 of FIG. 2 (the first three bits of the microinstruction, ROR are checked by NAND gates 201 and 202 which produce a logical one if and only if all the input bits are ones, indicating an adaptor interface service microinstruction is in execution. If the output of gate 202 is a one and the adaptor number register 121 is selecting the first port adaptor (DAN 0 DAN a priority request from the first controller adaptor is inhibited by gate 203. A priority request is also inhibited by gate 204 if a high level interrupt is in progress (HLIP I) if the second controller adaptor interrupt signal is up (i.e., I l), and if that controller adaptor is selected (DAN, 0). Otherwise, the priority of the first port is established, F) 0, unless masked (W 0). The second priority request, R0 0, is inhibited by gate 205, if an Al service microinstruction is in execution (gate 202 output is a one) and the adaptor number register 121 selects port 1, m, l and DAN 1. Gates 214 and 215 produce signals XHLI and XLLI which represent high and low level interrupt priorities respectively. The primary priority criterion is the port number, with port 0 having the highest priority and port 3 the lowest. Accordingly, the gates aregn nected to provide this relationship. For example, R0 is an inhibiting input to gates 207, 216 and 217, so that these ga tes are inhibited from producing a zero output when RQ O. Simlar inhibiting connections are made with R Q and R The four low order bits of controller register 123 MSK selectively inhibit m respectively when set. This provides aprogram mable interrupt mask which is implemented with the controller registers flip-flops 384-387, FlG. 40. Gates 210-215 determine if a high or low priority request is present. LEV and LEV are provided by the first two bits of control register 123.

XHLI RQ LEV RQ 'LEV, and

Gates 220-228 in FIG. 30 make the decisions for execution of interrupts and handle resetting of interrupts. Upon interrupt termination, interrupts are reset by certain forms of the branch microinstructions. Gates 220 and 228 sense these reset conditions in accordance with the inputs from the control store output register 145, FIG. 2: RES! ROR -m -ROR DlAv, where DlAV R O R, 'm 'ROR, -ROR, from branch decoder 147. The particular interrupt level in progress is represented by the states of flip-flops 231, 235 and 240. The FINT flip-flop 243 is provided for initiating an interrupt service. When a hardware error interrupt occurs, due to a parity error for example, X! 1 and gates 225-227 enable the interrupt with the signal DlNT 1 when an odd microinstruction is in execution and no error interrupt is in process. The EllP flip-flop 231 and the FINT flip-flop 243 are then set when clocked by the QEXEC pulse (FIG. 6). The 1 inputs of these flip-flops respectively receive DlNT-XEI and DINT, the former being provided by gates 229 and 230. More broadly: DlNT LDO'( XEI [W-FWT-TW" (RESl HLIP)XHLl m-m-XLLlD-ETW where LDO represents an odd microinstruction in execution, DIM represents a microinstruetion in execution which cannot be interrupted, a memory cycle microinstruction in execution or interrupt mechanism microinstruction in execution, FINT indicates an interrupt service has been initiated, INH represents a programmed interrupt inhibit condition, EllP represents an error interrupt in progress.

The high level interrupt in progress, HLIP, and low level interrupt in progress, LLIP, flip-flops are respectively set by DINT'XFI'XHLI and DlNT-YEl-XLLI. These flip-flops are respectively reset by RESl-EITJ- HLlF and RESl-EHTHLll where JHLlP is the J input to the HLlP flip-flop. The FINT flip-flop resets itself, after a microinstruction cycle.

An interrupt mechanism decoder 245 (FIG. 3b) is provided which is responsive to bits ROR from the control store output register 144 (P16. 2). This binary to one-of-ten converter enables the selection of specific registers and flip-flops for the interrupt mechanism microinstructions to operate upon. The converter outputs are in inverted form and gates 246-255 provide true outputs IM ZPTR flip-flop 290 and the FPTR flipflop 272 are bistable pointer elements of major importanee. These flip-flops determine which of the two sets of working registers is to be used for a microinstruetion routine or a mieroinstruction. The primary or normal pointer is ZPTR, is program controlled, and the FPTR pointer tracks the ZPTR pointer unless it is desirable to point to the alternate, non-current, set of working registersv The ZPTR flip-flop is set by .IZPTR FPTR-IM, lM,-R()R, IM,,-ZPTR and reset by FFTR-[M lM -ROR [M -ZPTR. These relationships are provided by NAND gates 282-289. The ZPTR flip-flop is clocked by QEXEC (Fl(]. 6).

There are three conditions under which the FPTR flip-flop state can be changed, that is, the output LOPT of gate 258 being a one. The first condition is when the interrupt level is reset while a high or low level interrupt is in progress and there is no hardware error interrupt request. RESl-(HLIP LLlPlm then causes the output of NAND gate 262 to be zero. The second con dition is when an interrupt service is initiated and there is no hardware error interrupt. DlNT'YFl then causes the output of gate 263 to be a zero. The third condition is an execution ofa change interrupt mechanism microinstruction selecting the FPTR flip-flop. ClM tlM lM then causes the output of gate 264 to be a zero. When FPTR flip-flop is subject to change, the output of gate 281, DPTR determines the new state.

There are four conditions under which the state of FPTR flip-flop is set or reset. The first condition is when an interrupt is started and either the ZPTR flipt'lop is reset and the interrupt request is low level or there is a dual mode operation and port 1 requests a high level interrupt. A second condition is when an interrupt service is terminated with an interrupt level reset from a high level interrupt in process, without an interrupt initiated and either the ZPTR flip-flop is set or a low level interrupt is in process, but not both. The third condition is when an interrupt level is reset with no high level interrupt and no interrupt initiation but the ZPTR flip-flop is set. The fourth condition is when a change interrupt mechanism sets the ZPTR flip-flop. That is:

DPTR DlNT-(ZFlRXLLl DUAL-RQ 'XHLl) RESl'HLlP'DlN l '(ZPTR'LLlP ZFTRLLIP) 2 RESI'HLIPDIN l -ZPTR 3 ClM'JZPTR 4 The FPTR flip-flop is set by DPTR'LOPT and reset by DTTR'LOPT, using NAND gates 258-269 and 273-281. Three additional control flip-flops 304-306 are provided with the logic provided by gates 292-303. [NH flip-flop 304 is set by lM,,-ROR and reset by IM,, -m INHG is set by lM,-ROR and reset by 1M,. Wit DUAL flip-flop 306 is set by IM,'ROR,, and reset by lM,-ROR,,. These flip-flops 304-306 and ZPTR flip-flop 290 are clocked by QClM QRAW" CIM-EXEC, using gates 307 and 308.

In FIG. 4, the controller register 123 is shown as comprised of .I-K flip-flops 380-387 which are set by the data-bus-out, DBO from FIG. 2. These signals are inverted by gates 388-393, 323 and 322, respectively and applied to the K inputs of flip-flops 380-387. The controller register 123 is clocked by gates 376-378 such that DAC QRAW-EXEC-(EW WL).

The controller adaptor number registers are the J-K flip-flops 363-366, shown in FIG. 4, having a pair for each of the two sets of working registers. In general, these flip-flops are set and reset by initiation of an interrupt service or the execution of a load interrupt mechanism mieroinstruction. The ANOO flip-flop 363 is set by (m ifim-(DlNT'DPlR-m) DBO,,'( llv 1 -F l:1R- LlM) and reset by (R0,, RQ,,,)-(DINT'DPTR-XEI m -(lM Fl TR-Lllvl). ANOI is set by 7 (F),,Em-(DINT-ISFW-Xfil) DBO, ,(IM. .'FT'W- 1.1M) and reset by (R0,, RQ,,,y(DlNTDPTR-m) DBo -(lM 'FPTRLlM). AN is set by (RQtz'RQmHDINT'DPTRW) DBO,,-(lM,-Fm- 'LlM) and reset by (so, Ti QZQ-(DINTDPTRXEI) DBO -(lM -FPTR-L1M). ANll is set by 'RTLg-(DlNT-DPTRW) DBO, '(lM FPTR- 'LlM) and reset by (RC) RQ,,)-(DlNT'DPTR'XEl) DBO,,;(IM -FPTR'LIM). These relationships are implemented with gates 310-323 and 331-362. The output signals are DAN FPTR'AN10 FPTR-AN00 and DAN, FPTR-ANll FPTR-ANOL Accordingly, the FPTR flip-flop of FIG. 3 selects which pair of flipflops is effective at a given time for designating an l/O port, i.e., the adaptor number selection. This arrangement is representative of the manner in which a selection is made between the two sets of working registers.

The indirect segment branch microinstruction, having the format shown in FIG. 5, is one of the branch microinstructions which supports the interrupt reset function. When the microinstruction is executed, a branch is made to the even address specified by bits 24-30 within the current 256 word segment. lf bit 22 is a one, the interrupt level is reset. When this microinstruction terminates an interrupt service, the service routine informs the current adaptor so that the corresponding interrupt request signal is reset, i.e., RES] l. If the terminating interrupt is a high level interrupt which interrupted a low level interrupt, the adaptor port for the interrupted low level interrupt still has an 1,, interrupt request active. Accordingly, the appropriate adaptor number previously loaded into the non-current portion of register 121 is effective again and the low level interrupt is resumed. The next address is taken from INTAR register 129.

The vector segment branch microinstruction, having the format shown in FIG. 5, has, as one of its uses, the capability for testing for an event notification from an I/O post. Another use is to respond to particular conditions in the non-current branch test register. When this branch microinstruction is executed, a branch is taken to a location within the current 256 word segment as specified by the seven bit even address field, bits 8-14, modified in accordance with the split field n bits 6, 7 and 15. The modification consists of substituting two or four hits for the least significant two or four hits of the address bits taken from the control store output register 145, ROR,,, or ROR Accordingly, one of the inputs to A, switch, FIG. 2, for addressing control store 50, is the output of vector segment branch V switch 109. The inputs to this switch are various combinations of bits from the branch test register 106 of both sets of working registers and from gates 395 and 396 in FIG. 4b. The latter bits represent the presence of an event notification, lMS,, and the most significant bit from the interval timer 122, IMS,,. IMS, and IMS, can be inhibited by lNHG from flip-flop 305, FIG. 3b, under program control. Because the resulting control store addresses reflect the states of the selected input hits, this arrangement enables a rapid and efficient programmable test of the branch test registers and the adaptor interface. The capability of branching on a non-current branch test register enables communication between programs using the current and noncurrent sets of working registers without requiring the use of read/write memory. The test of the adaptor interface reduces the programming overhead for servicing event notifications. Because these events are in tended to be of low priority, it is important that they be detected and serviced readily without significant program execution time being required to scan for them.

However, the most common mode of accessing noncurrent working registers is to execute a CIM microin struction to change the state of FPTR flip-flop 272.

The operation of the interrupt logic of FIGS. 3 and 4 is now summarized. If no interrupts are being processed, the EIIP, HLIP, LLlP and FlNT flip-flops are reset. If all the bits of the adaptor control register 123 are reset except for the first, LEV,,, none of the interrupts will be masked. Also, port 2 will be specified as associated with control adaptor ports 0 and 1, and only an l,, interrupt from port 0 will be high level. If an 1, interrupt from port 1 is received, the R0,, output of gate 207 will be zero because all its inputs are ones, as suming a DA[ microinstruction is not in execution. If any one of ROR bits is a Zfifllhe output ofgile 205 will be a one. If 1,, 0, then RQw l, and MSK, l because of the assumed initial condition of control reg ister 123. Also, the output of gate 215, XLLl, is one and causes a positive decision for an interrupt, DlNT 1, when an odd microinstruction is being executed, (LDO l), no conflicting microinstructions in execution (DIM l) and the lNH flip-flop has not been set. Then the outputs of gates 223, 224 and 226 are all ones. Accordingly, LLIP and FINT flip-flops are set through gates 238 and 239, indicating that a low level interrupt is in process.

The normal ZPTR flip-flop 290 is generally in a reset state. For example, a ClM type of microinstruction with ROR 0010 is decoded by the binary to oneoften converter 245 in conjunction with ROR,, 0 resets the ZPTR flip-flop by means of gates 286 and 287 when clocked by QClM CIM'QRAW'EXEC. With a low level interrupt, XLLlZPTR causes DPTR I through gates 273, 275, 276 and 281. Therefore, when the low level interrupt is initiated, gates 258, 263 and 265-269 set FPTR flip-flop 272. Also, with the start of an interrupt, the control address register contents are saved in the lNTAR register 129 (FIG. 2) and a branch is made to the hard-wired address in A and A, switches 134 and 135. Alternatively, the new address can be obtained from the AUXAR register, if specified by the adaptor interface by the interrupt definer line. Lastly, the adaptor number is loaded into the controller adaptor number register 121 (FIG. 4). Gates 316, 318, 319, 343, 353 and E cause ANll flip-flop 366 to be set in response to XE], DPTR and 11?) This causes DAN, l by gates 369, 370, 373 and 374.

If an interrupt should be received from port 0, while a low level interrupt is being processed, it will be treated as a high level interrupt because the LEV, flip-flop 380 in control register 123 is set. In a manner similar to th e l ow level interrupt described, this interrupt causes R0 0 0, XHLI l and DINT I. Also, the FINT flip-flop 243 and HLIP flip-flop 235 are set. The FPTR flip-flop 272 is reset because DPTR 1 0. It should be noted that for dual channel operation, with interrupts from controller adaptors 0 and I both high level, and with DUAL flip-flop 306 set, then an interrupt from controller adaptor 1 will cause the FPTR flipflop to be set, because DPTR 1, through gates 274-276 and 281. With an ordinary high level interr upt fro adapto rport 0, FPTR 0, DPTR 0 and R0,, RQ, R0,, 1, so that AN00 flip-flop 363 and AND] flip-flop 364 are reset. Accordingly, the outputs of the adaptor number register, DAN and DAN are both zero.

As shown in FIG. 9, the start memory cycle definer microinstruction format has 0001 in the four most sig nificant bits. A write cycle is specified by a l in the least significant bit and a read cycle is specified by a I in the next to least significant bit. The source of the main memory data address is specified by the register designation in bits 4-8.

The adaptor service microinstruction has 111 in the three most significant bits. The fourth bit specifies normal operation if its value is zero or enables high speed transfer if its value is one. For normal operation, the adaptor port selected for service is specified by the adaptor number register 121. For high speed data transfer operation, a link adaptor port is selected by adaptor control register 123 in combination with adaptor number register 121, and in addition an auxiliary controller, adaptor selection is made. The last eight bits of the microinstruction contain a literal which is applied to the address/control lines of the adaptor inter face and the resulting signals define the service operatiun functions in accordance with particular subsystem requirements. For high speed data transfers the direction of the transfer is specified by this literal. A one in the fifth bit indicates that no response in signal is required on the adaptor interface. A one in the sixth bit specifies that the status line signals of the adaptor interface are loaded into the lower order half of the branch test register [06. The seventh and eighth bits specify that the A and B portions, respectively, of the AB accumulator 105 are loaded with the contents of the data-in lines of the adaptor interface.

FIG. 7 shows the logic for adaptor port selection when a device port is selected for service. The outputs EL of gates 403-406 represent the selection of respective adaptor ports 0-3, in complement form. All of the gate outputs m are a function of the execution of an adaptor service microinstruction being in execution. Accordingly, the first three bits of the control store output register 144 (FIG. 2) are tested by gates 201 and 202 so that DAI ROR -ROR -ROR Port 0 is selected if and only if the adaptor number register contains the adaptor number zero and the adaptor service instruction specifies an adaptor service which is not a high speed transfer (R011 0). That is:

SEL, DAIDAN,;DAN,-ROR

Similarly, for the second port:

SEL, DAtt)AN,,-DAN,-R'0Tt,

For the link adaptor selection, the logic is more complex because in addition to selecting a normal adaptor function (ROR 0), the logic must support a second adaptor selection so that data can be transferred across two adaptor ports during the execution of a single adaptor interface service microinstruction. Accordingly, the logic for the third adaptor port is:

SEL, DAII DAN,,'DAN,'GT1 ffiN.,-RoR, DAN,-Tt, DAN,-L A,)] The first term includes the adaptor number explicitly, BATE-DAN from the adaptor number register 121. The second term is a function of the control register 123 state in respect to the previously set flip-flops 382 and 383 which associate link adaptor ports with the device adaptor ports. The fourth adaptor port is selected in an equivalent manner:

stat. DAI[DAN (DAN,

Additional gates 423-426 in FIG. 7 enable a flexible dialogue for concurrent data transfers across the adap tor interface. Gates 423 and 424 respectively produce DI-ILII and DHLIP where DHLIP [fiFh-HLIP and DHLIP, DAN 'HLIP. Gates 425 and 426 respectively produce 5m and DSEL,, where DSEL DANU'DANfRORg'DA! and DSEI.,=DANtr DAN,-ROR,-,-DAI with these signals. together with the signals from control register 123 (FIG. 2).

The signals generated by the FIG. 7 logic, together with the link adaptor assignments, LA and LA by register 123 (FIG. 4) enable high speed data transfers with the execution of an adaptor interface service in struction. The fourth bit, ROR in such instructions, is a logical one. For example, the data transfer is pre' ceded by an interrupt (I or I,) or load interrupt mechanism instruction which sets the adaptor number register to the desired controller adaptor port number so that DAN 0 and DAN 0 or I. The execution of the adaptor interface instruction causes the contents of the AB accumulator register to be transferred over the data-bus-out lines. The direction of the data transfer is specified by the literal field of the microinstruction which is interpreted by one adaptor port as a read com mand and which is interpreted by the other adaptor port as a write command. During the same microin struction cycle, the contents of the data-bus-in are loaded into the AB accumulator, at the trailing edge of the EXEC clock pulse. The link adaptor is determined by the control signals LA and LA, and the adaptor number register 12]. Optionally, if the adapter interface microinstruction is preceded by a start read mem ory cycle microinstruction, the original contents of memory 10 are stored in the AB accumulator (FIG. 2). A line, such as 127 (FIG. 1) between the con troller adaptor I20 and the link adaptor 130 provides the capability for returning a response in (RPI) to the controller. If the adaptor interface microinstruction is immediately preceded by a start write memory cycle microinstruction, the additional function of storing the AB accumulator contents into read/write main memory is performed.

An alternative fast transfer mode of operation is from main memory to an adaptor port. This requires a main memory cycle but no more. It is initiated by a start read memory cycle microinstruction followed by an adaptor interface service microinstruction. During the latter, the contents are transferred from the AB accumulator over the data-out-bus to an adaptor port and the contents of the AB accumulator are replaced by the data from main memory. As shown in FIG. 8, for each port, adaptor n 0, 1, 2, and 3, there are input lines to the controller for interrupts (I event notification (EN,,} and response in (RPI). For the first two ports, n 0, l, there are high level interrupts definers (HLl There are also individual port adaptor output lines, select (SEL initialize and execution clock definer (EXEC). For the first two ports, n 0, I, there are output lines for link adaptor definers (LA link adaptor selected (DSEL and high level interrupt in progress tDHLlP )v A common raw clock (DRAW) is also provided.

+ ROB l It is understood that the invention should not be construed as being limited to the form of embodiment described and shown herein as many modifications may be made by those skilled in the art without departing from the scope of the invention.

What is claimed is:

l. A controller intermediate a central processor and a peripheral device having a data storage register from and to which device data is transferred through adaptor ports between the processor and controller and between the controller and the device during the same operation cycle. said controller including a plurality of device adaptor ports providing an interface for peripheral devices and a plurality of link adaptor ports for providing an interface for a central processor, comprising A. an interface bus connected to all adaptor, ports having portions for input and output data transfer connected to said controller data storage register;

B. an adaptor number register for selecting an adaptor port for data transfer;

C. a control register for associating a link adaptor port with a controller adaptor port;

D. first selection logic means responsive to said adaptor number register for selecting an device adaptor port for data transfer on said interface bus;

Ev second selection logic means responsive to said adaptor number register and said control register for selecting a link adaptor port for data transfer on said interface bus.

2. The apparatus of claim 1, further comprising:

F. a read/write memory, connected to said interface bus, for selectively receiving data.

3. The apparatus of claim 1, further comprising:

F. interconnection means, connecting a link adaptor port and a device adaptor port, for enabling a response-in signal from the device adaptor through the link adaptor port to indicate that a data transfer has been successful.

4. In a programmed peripheral controller responsive to adaptor service requests, apparatus for enabling data transfers between a pair of adaptor ports during a single instruction cycle, said controller including a plurality of link adaptor ports and a plurality of controller adaptor ports, comprising:

A. a pair of bistable controller register elements for associating a pair of link adaptor ports with a pair of controller adaptor ports in accordance with the respective states of said pair of bistable register elements;

8. an accumulator register;

C. an input switch for selectively loading said accumulator;

D. a common input data bus connected to said input switch and connected to all adaptor ports;

E. a common output data bus connected to all adap tor ports;

F. an output switch selectively connecting said accumulator to said output data bus;

G. a pair of bistable adaptor number register elements;

H. interrupt logic for selectively setting said pair of bistable adaptor number register elements;

I. a control store output register for receiving controller adaptor service requests;

J. primary adaptor port selection logic, responsive to said pair of bistable controller register elements and to said pair of bistable number register ele ments;

K. auxiliary adaptor port selection logic, responsive to pair of bistable controller register elements, to said pair of bistable number register elements, and to said control store output register.

5. The apparatus of claim 4, further comprising:

L. a read/write memory, connected to said interface bus, for selectively receiving data.

6. The apparatus of claim 4, further comprising:

L. interconnection means, connecting a link adaptor port and a controller adaptor port, for enabling a response-in signal from the controller adaptor through the link adaptor port to indicate that a data transfer has been successful.

III a it 

1. A controller intermediate a central processor and a peripheral device having a data storage register from and to which device data is transferred through adaptor ports between the processor and controller and between the controller and the device during the same operation cycle, said controller including a plurality of device adaptor ports providing an interface for peripheral devices and a plurality of link adaptor ports for providing an interface for a central processor, comprising A. an interFace bus connected to all adaptor, ports having portions for input and output data transfer connected to said controller data storage register; B. an adaptor number register for selecting an adaptor port for data transfer; C. a control register for associating a link adaptor port with a controller adaptor port; D. first selection logic means responsive to said adaptor number register for selecting an device adaptor port for data transfer on said interface bus; E. second selection logic means responsive to said adaptor number register and said control register for selecting a link adaptor port for data transfer on said interface bus.
 2. The apparatus of claim 1, further comprising: F. a read/write memory, connected to said interface bus, for selectively receiving data.
 3. The apparatus of claim 1, further comprising: F. interconnection means, connecting a link adaptor port and a device adaptor port, for enabling a response-in signal from the device adaptor through the link adaptor port to indicate that a data transfer has been successful.
 4. In a programmed peripheral controller responsive to adaptor service requests, apparatus for enabling data transfers between a pair of adaptor ports during a single instruction cycle, said controller including a plurality of link adaptor ports and a plurality of controller adaptor ports, comprising: A. a pair of bistable controller register elements for associating a pair of link adaptor ports with a pair of controller adaptor ports in accordance with the respective states of said pair of bistable register elements; B. an accumulator register; C. an input switch for selectively loading said accumulator; D. a common input data bus connected to said input switch and connected to all adaptor ports; E. a common output data bus connected to all adaptor ports; F. an output switch selectively connecting said accumulator to said output data bus; G. a pair of bistable adaptor number register elements; H. interrupt logic for selectively setting said pair of bistable adaptor number register elements; I. a control store output register for receiving controller adaptor service requests; J. primary adaptor port selection logic, responsive to said pair of bistable controller register elements and to said pair of bistable number register elements; K. auxiliary adaptor port selection logic, responsive to pair of bistable controller register elements, to said pair of bistable number register elements, and to said control store output register.
 5. The apparatus of claim 4, further comprising: L. a read/write memory, connected to said interface bus, for selectively receiving data.
 6. The apparatus of claim 4, further comprising: L. interconnection means, connecting a link adaptor port and a controller adaptor port, for enabling a response-in signal from the controller adaptor through the link adaptor port to indicate that a data transfer has been successful. 